package model;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import domein.Bezoek;
import domein.Gebruiker;
import domein.Genodigden;

public class BezoekerIO extends DbAbstract {

	public BezoekerIO() {
		super();
	}

	/*
	 * 
	 * Lijst bezoekers ophalen
	 */

	public ArrayList<String> listBezoekers() {
		ArrayList<String> bList = new ArrayList<String>();
		try {
			super.makeConnection();
			ResultSet rs = super.makeResultSet("SELECT * FROM bezoek");
			while (rs.next()) {
				String email = rs.getString("email");
				bList.add(email);
				
			}
		} catch (SQLException ex) {
			System.out.println("Lijst bezoekers ophalen gefaald.");
		}
		super.closeConnectRst();
		return bList;
	}
	
	/*
	 * 
	 * Lijst bezoekers ophalen
	 */
	
	public ArrayList<Genodigden> naamBezoekers(String eventID) {
		ArrayList<Genodigden> gList = new ArrayList<Genodigden>();
		try {
			super.makeConnection();
			ResultSet rs = super.makeResultSet("select * from genodigden INNER JOIN bezoek ON genodigden.email=bezoek.email AND bezoek.eventID='"+eventID+"'ORDER BY status ASC");
			while (rs.next()) {
				Genodigden g = new Genodigden("","", "", "", "", "", ""); 
				g.setId(rs.getString("id"));
				g.setNaam(rs.getString("naam"));
				g.setEmail(rs.getString("email"));
				g.setOrganisatie(rs.getString("organisatie"));
				g.setTelefoonnummer(rs.getString("telefoonnummer"));
				g.setContactpersoon(rs.getString("contactpersoon"));
				g.setStatus(rs.getString("status"));
				gList.add(g);
			}
		} catch (SQLException ex) {
			System.out.println("Lijst bezoekers ophalen gefaald.");
		}
		super.closeConnectRst();
		return gList;
	}

	/*
	 * 
	 * Lijst ophalen van gebruikers in de database
	 */

	public ArrayList<Gebruiker> listBezoekersEvent() {
		ArrayList<Gebruiker> beList = new ArrayList<Gebruiker>();
		ArrayList<Gebruiker> bezoekersList = new ArrayList<Gebruiker>();
		ArrayList<String> bList = listBezoekers();
		try {
			super.makeConnection();
			ResultSet rs = super.makeResultSet("SELECT * FROM gebruiker");
			while(rs.next()){
				String email = rs.getString("email");
				String voornaam = rs.getString("voornaam");
				String achternaam  = rs.getString("achternaam");
				String bedrijf = rs.getString("bedrijf");
				String telefoonnummer = rs.getString("telefoonnummer");
				String wachtwoord = rs.getString("wachtwoord");
				Gebruiker g = new Gebruiker(email, voornaam, achternaam, bedrijf, telefoonnummer, wachtwoord);
				beList.add(g);
				for (Gebruiker gebruiker : beList) {
					if (bList.contains(gebruiker.getEmail())){
						bezoekersList.add(gebruiker);						
					}
				}
			}
		} catch (SQLException ex) {
			System.out.println("Lijst bezoekers van evenement ophalen gefaald.");
		}
		super.closeConnectRst();
		return bezoekersList; 
	}
	 
	public void bezoekerToevoegen(Bezoek b){
		String mail = b.getEmail();
		int eventID = b.getEventID();
		int hB = b.getHeeftBezocht();
		int status = b.getStatus();

		String query = "INSERT INTO bezoek (email, eventID, heeftBezocht, status)";
		query += "VALUES('" + mail + "', '" + eventID + "', '" + hB
				+ "', '" + status + "')";

		try {
			super.addUpdateRecord(query);
			super.closeConnectRst();

		} catch (Exception e) {

		}
	}
	
}